package com.example.leetcode.trainingcamp.week12;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * 一个整型数组 nums 里除两个数字之外，其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)，空间复杂度是O(1)。
 */
public class Offer56_I {


    public int[] singleNumbers(int[] nums) {
        Map<Integer,Integer> map = new HashMap<>();
        for (int i:nums){
            map.put(i,map.getOrDefault(i,0)+1);
        }
        int[] r = new int[2];
        int index = 0;
        for (Map.Entry<Integer,Integer> entry:map.entrySet()) {
            Integer value = entry.getValue();
            if (Objects.equals(value,1)){
                r[index] = entry.getKey();
                index++;
            }
        }
        return r;
    }
}
